היי.
יש לי תיבת טקסט כזו באחד מקבצי ה view:
<?= CHtml::textField('utu_before', null, array( 'class' => "t-field" )); ?>


עכשיו בעת לחיצה על אנטר, אני טוען את העמוד home/show בעזרת jQuery.
בעמוד home/show שזה בעצם HomeController -> actionShow אני בעצם רוצה להכניס למשתנה את מה שהמשתמש כתב בשדה בשם utu_before, איך אני עושה את זה ?

ועוד שאלה, מה ההבדל בין textField לבין activeTextField ? כיאילו בין שדה שהוא רגיל ולבין שדה שהוא active.

6 תשובות

avatar ענה intval ב 17 למרץ 2013 #

א. בדיוק כמו שאתה עושה בלי YII. או על ידי סאבמיט של טופס שאפשרל קרוא ממנו דרך _POST או על ידי הופסה של פרמטר לקישור שאפשר לקרוא ממנו ב GET.

ב. activeTextField מקבל בתור אחד המפרמטרים מופע של מחלקה activeRecord וקורה את התוכן ממנה
ככה שתוכל לעשות שדה קלט והטקסט שכרגע שמור במסד יופיע למשתמש במסך

avatar ענה Ben ב 17 למרץ 2013 #

א. ומה לגבי,

Yii::app()->request->getPost()

זו גם דרך לקלוט משדה כלשהו רק אם יש כפתור submit ?

יש דרך מיוחדת לקרוא ב GET דרך YII או שזה באופן רגיל ?

ב. תודה :).

avatar ענה intval ב 17 למרץ 2013 #

יופי שאתה מכיר את הפקודה הזו בגלל שנמנעתי מלכתוב אותה בהודעה הקודמת בשביל לא להפיל עליך יותר מדי.
אבל מאחורי הקלאים הפוקנציה הזו היא בדיוק אותה גישה למערך POST
וזאת הדרך העדיפה.

Yii::app()->request->getPost()
Yii::app()->request->getQuery()
http://www.yiiframework.com/doc/api/1.1/CHttpRequest

avatar ענה Ben ב 17 למרץ 2013 #

אני קורא דיי הרבה באתר שלהם, אני פשוט לא מבין איך להשתמש עם כל מה שהם מציעים..
אוקי, ז"א ש:

Yii::app()->request->getQuery('number')


הוא אותו דבר כמו:
$_GET['number']


אם כן, למה אני לא יכול לעשות דבר כזה:
if (isset(Yii::app()->request->getQuery('number')))


אם ה_GET אני יכול.

* למה השימוש בפניה ל POST ו ל GET דרך YII עדיף יותר מהרגיל ?

ועוד שאלה,
כשאני גולש לדוגמא לעמוד register.htm זה כיאילו אני גולש לעמוד account/register,
האם יש אפשרות לאפשר גלישה רק ל register.htm, ומי שינסה לגלוש ל account/register יקבל שגיאה 404 או משהו שיחסום את זה ויאפשר אך ורק ל register.htm ?

avatar ענה ldbrgr ב 17 למרץ 2013 #

שאלה ראשונה:
זה לא קשור ל Yii, עד PHP 5.5 אתה חייב להעביר רפרנס לפונקציה isset,
ו

Yii::app()->request->getQuery('number')
זה לא רפרנס, זאת קריאה לפונקציה.
גם אין שום סיבה לעשות את זה, אם אתה רוצה לעבוד רק עם $_GET['number'] תעשה ככה:
if($number = Yii::app()->request->getQuery('number')) {
  echo $number;
} else {
  echo "Empty _GET[number]";
}

זה בדיוק כמו
if( ! empty($_GET['number'])) {
  echo $_GET['number'];
} else {
  echo "Empty _GET[number]";
}

לגבי השאלה השניה: אני לא מבין למה אתה רוצה בכלל לעשות את זה,
אם אין שום לינק באתר שמקשר ל account/register שום מנוע חיפוש לא יאנדקס אותו ואף משתמש מצוי לא יתחיל לנחש כתובות באתר.
אם אתה ממש ממש רוצה את זה, אתה יכול להוסיף את התנאי הזה:
if(Yii::app()->request->requestUri != '/register.htm') {
  // 404 or redirect to user to '/register.htm'..
}

בקונטרולר account באקשן register.

avatar ענה Ben ב 17 למרץ 2013 #

1. תודה.
2. כן, לאחר שקראתי שוב מה שאלתי, הבנתי שזה סתמי. בכל מקרה הסתדרתי כבר והצלחתי לעשות את מה שהתכוונתי.